// 可能是我的node版本问题，不用严格模式使用ES6语法会报错
'use strict'
// const fs = require('fs')
const jwt = require('jsonwebtoken')
// const path = require('path')
// var formidable = require('formidable')
const models = require('./db')
const express = require('express')
const router = express.Router()

/** ************ 创建(create) 读取(get) 更新(update) 删除(delete) **************/
//设置跨域请求头
router.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
  res.header("X-Powered-By",' 3.2.1')
  res.header("Content-Type", "application/json;charset=utf-8");
  next();
});

// 创建账号接口
router.post('/api/user/register', (req, res) => {
  // 这里的req.body能够使用就在index.js中引入了const bodyParser = require('body-parser')
  models.Login.find({ account: req.body.account }, (err, data) => {
    if (err) {
      console.log(err)
    } else {
      console.log(data)
      if (data.length > 0) {
        res.send({ code: 0, msg: '帐号已存在!' })
      } else {
        let newAccount = new models.Login({
          account: req.body.account,
          password: req.body.password,
          img: 'https://tage-1258294351.cos.ap-shanghai.myqcloud.com/avatar/timg.jpg'
        })
        // 保存数据newAccount数据进mongoDB
        newAccount.save((err, data) => {
          if (err) {
            res.send({ code: 0, msg: '注册失败!', data: err })
          } else {
            let token = jwt.sign({account: req.body.account}, 'token', {expiresIn: '24h'})
            res.send({ code: 1, msg: '注册成功!', token: token })
          }
        })
      }
    }
  })

  // let newAccount = new models.Login({
  //     account : req.body.account,
  //     password : req.body.password
  // });
  // // 保存数据newAccount数据进mongoDB
  // newAccount.save((err,data) => {
  //     if (err) {
  //         res.send(err);
  //     } else {
  //         res.send({'code': 1000, 'msg': 'Register successfully!'});
  //     }
  // });
})
// 获取已有账号接口
router.post('/api/user/login', (req, res) => {
  // 通过模型去查找数据库
  console.log(req.body.account)
  models.Login.find(
    { account: req.body.account },
    (err, data) => {
      if (err) {
        // res.send(err);
        // res.send({ code: 1001, msg: '用户不存在!', data: err })
      } else {
        // console.log(data)
        if (data.length > 0) {
          if (data[0].password === req.body.password) {
            let token = jwt.sign({account: req.body.account}, 'token', {expiresIn: '24h'})
            res.send({ code: 1, msg: '登录成功!', data: data[0], token })
          } else {
            res.send({ code: 0, msg: '密码错误!', data: err })
          }
        } else {
          res.send({ code: 0, msg: '用户不存在!', data: err })
        }
      }
    }
  )
})
// 获取所有账号接口
router.post('/api/user/all', (req, res) => {
  // 通过模型去查找数据库
  models.Login.find((err, data) => {
    if (err) {
      res.send(err)
    } else {
      res.send(data)
    }
  })
})

router.post('/api/user', (req, res) => {
  models.Login.find(
    { account: req.body.account },
    { _id: 0, __v: 0 },
    (err, data) => {
      if (err) {
      } else {
        res.send({data: data[0]})
      }
    }
  )
})
// 修改头像
router.post('/api/user/avatar', (req, res) => {
  console.log(req.body)
  models.Login.update(
    { account: req.body.account },
    { $set: { img: req.body.img } },
    (err, data) => {
      if (!err) {
        res.send({code: 1, msg: '修改成功'})
      }
    }
  )
  models.Shuo.update(
    { account: req.body.account },
    { $set: { img: req.body.img } },
    { multi: true },
    (err, data) => {
      if (!err) {
      }
    }
  )
  // var form = new formidable.IncomingForm()
  // var url = __dirname
  // form.uploadDir = url + '/..//src//assets'
  // //  form.uploadDir = path.resolve(__dirname, '/../', '/avatar')
  // form.parse(req, function (err, fields, files) {
  //   var oldname = files.tou.path
  //   var newname = url + '/..//src//assets/' + fields.account + '.jpg'
  //   if (err) {

  //   } else {
  //     console.log(fields.account)
  //     models.Login.update(
  //       { account: fields.account },
  //       { $set: { img: fields.account } },
  //       (err, data) => {
  //         if (err) {
  //         }
  //       }
  //     )
  //     models.Shuo.update(
  //       { account: fields.account },
  //       { $set: { img: fields.account } },
  //       { multi: true },
  //       (err, data) => {
  //         if (err) {
  //         }
  //       }
  //     )
  //     fs.rename(oldname, newname, function (err) {
  //       if (err) {

  //       } else {
  //         res.send({code: 1, msg: '修改成功'})
  //       }
  //     })
  //   }
  // })
})
// 所有动态
router.get('/api/dynamic/all', (req, res) => {
//   console.log(req.body)
  models.Shuo.find(
    {},
    { _id: 0, __v: 0 },
    { sort: { date: -1 } },
    (err, data) => {
      if (err) {
      } else {
        //   res.send(data.sort({date: -1}))
        res.send({data, code: 1})
      }
    }
  )
})
// 赞
router.post('/api/dynamic/zan', (req, res) => {
  console.log(req.body.zan)
  models.Shuo.update(
    { id: req.body.id },
    { $set: { zan: req.body.zan } },
    (err, data) => {
      if (!err) {
        res.send({code: 1, msg: '点赞成功'})
      }
    }
  )
})
router.post('/api/dynamic/add', (req, res) => {
  //   console.log(req.body)
  let newShuo = new models.Shuo({
    id: req.body.id,
    account: req.body.account,
    txt: req.body.txt,
    img: req.body.img,
    date: new Date()
  })
  newShuo.save((err, data) => {
    if (err) {
      res.send('失败')
    } else {
      res.send({code: 1, msg: '发表成功'})
    }
  })
})

router.post('/api/user/delete', (req, res) => {
  //   console.log(req.body)
  models.Shuo.find(
    { account: req.body.account, txt: req.body.txt },
    (err, data) => {
      if (err) {
      } else {
        models.Shuo.remove(
          { account: req.body.account, txt: req.body.txt },
          (err, data) => {
            if (err) {
            } else {
              res.send({code: 1, msg: '删除成功'})
            }
          }
        )
      }
    }
  )
})
router.get('/api/test', (req, res) => {
//   console.log(req.query)
  res.send(JSON.stringify(req.query))
})

module.exports = router
